<?php
// lib/test/JobeetTestFunctional.class.php
class JobeetTestFunctional extends sfTestFunctional {
	public function loadData() {
		Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');
		return $this;
	}

	 public function getMostRecentProgrammingJob() {
		$q = Doctrine_Query::create()
			->select('j.*')
			->from('JobeetJob j')
			->leftJoin('j.JobeetCategory c')
			->where('c.slug = ?', 'programming');
		$q = Doctrine::getTable('JobeetJob')->addActiveJobsQuery($q);

		return $q->fetchOne();
	}

	public function getExpiredJob() {
		$q = Doctrine_Query::create()
			->from('JobeetJob j')
			->where('j.expires_at < ?', date('Y-m-d', time()));

	    return $q->fetchOne();
	}

	public function createJob($values = array(), $publish = false){
		$this->
			get('/job/new')->
			click('Preview your job', array('job' => array_merge(array(
				'company'      => 'Sensio Labs',
				'url'          => 'http://www.sensio.com/',
				'position'     => 'Developer',
				'location'     => 'Atlanta, USA',
				'description'  => 'You will work with symfony to develop websites for our customers.',
				'how_to_apply' => 'Send me an email',
				'email'        => 'for.a.job@example.com',
				'is_public'    => false,
			), $values)))->
			followRedirect();

			if ($publish){
				$this->
				click('Publish', array(), array('method' => 'put', '_with_csrf' => true))->
				followRedirect();
			}
		return $this;
	}


	public function getJobByPosition($position)	{
		$q = Doctrine_Query::create()
			->from('JobeetJob j')
			->where('j.position = ?', $position);

		return $q->fetchOne();
	}


}
?>